# 输入int型数组，询问该数组能否分成两组满足以下条件：
# 1.两组中各元素加起来的和相等，
# 2.所有5的倍数必须在其中一个组中，所有3的倍数在另一个组中（不包括5的倍数），不是5的倍数也不是3的倍数能放在任意一组，
# 可以将数组分为空数组，能满足以上条件，输出true；不满足时输出false
from typing import List


def func(nums: List[int]) -> bool:
    """
    要想将数据均分成两组，则最后得到的两组数据各自之和一定是 totalSum // 2
    解法：
        1.先将 5的倍数 和 3的倍数分成两组sum3, sum5)，其他的为另一组
        2.在剩下的 nums 中寻找是否 存在某个子集的和为 totalSum // 2 - sum3(totalSum // 2 - sum5也可)
    :param nums:
    :return:
    """
    totalSum = sum(nums)
    if totalSum % 2 != 0:  # 总和不是2的倍数，不可分2份和相等的数字
        return False
    sum5, sum3, i = 0, 0, 0
    while i < len(nums):  # 将 5的倍数 和 3的倍数分开，并将这些数从 nums中删除
        if nums[i] % 5 == 0:
            sum5 += nums[i]
            del nums[i]
        elif nums[i] % 3 == 0:
            sum3 += nums[i]
            del nums[i]
        else:
            i += 1
    # print(nums, sum3, sum5, totalSum)
    return find(nums, totalSum // 2 - sum3, 0)


def find(nums:List[int], target: int, i: int) -> bool:
    """
    查看 nums 中是否 存在某个子集的和为 target
    :param target:
    :param start:
    :return:
    """
    if i == len(nums):  # 到达了最后
        return target == 0
    # 对于每个元素有选择该元素和不选两种可能
    # 选择i位置，递归找新目标数target-nums[i]， 或者不选择i位置，在后面位置找target
    return find(nums, target - nums[i], i + 1) or find(nums, target, i + 1)


if __name__ == "__main__":
    while True:
        try:
            n, nums = input(), list(map(int, input().split()))
        except EOFError:
            break
        else:
            print(func(nums))
